AI调参新纪元,腾讯数据库论文被SIGMOD收录
The following article is from AI前线 Author Natalie
— 点击▲关注 腾讯云数据库
—腾讯数据库与华中科技大学合作发布了最新研究论文 《An End-to-End Automatic Cloud Database Tuning System Using Deep Reinforcement Learning》,该论文首次提出了云数据库自动性能优化系统 CDBTune,该系统可以在缺少相关经验数据训练的情况下建立优化模型,为用户提供在线自动优化数据库性能的服务,性能调优结果首次全面超越数据库专家,将大幅提高数据库运维效率。该论文已经被国际数据库顶级会议 SIGMOD 收录。
SIGMOD评语
随着自研业务以及腾讯云上数据库实例规模不断高速增长,我们发现对于很多腾讯云数据库的使用者来说,由于缺少丰富的数据库性能优化经验,很难发现导致数据库性能下降的原因并有效解决。而对于云厂商来说,完全依赖数据库专家进行数据库参数调优代价昂贵且不现实。
在 CDBTune 之前,业界对于数据库性能自动调优也有一些类似工作。大概有两个方向:
第一个方向主要利用启发式搜索的方法缩小高维配置空间。这种方法不利用任何历史经验数据,因此在每个调参任务开始时都需要从 0 开始,调参效率较低。
另外一个方向是采用流水线方式的传统机器学习方法,导致推荐配置有一定的误差。而且需要大量高质量的经验数据进行模型训练,提高了学习门槛。
CDBTune 主要的目标就是解决两个问题:降低学习门槛和提升调参效率。
CDBTune 的工作过程主要分为离线训练和在线调优两个步骤。离线训练就是用一些标准的负载生成器对数据库进行压测,边收集训练数据,边训练一个初步的配置推荐模型。当用户或者系统管理员有数据库性能优化需求时,可以通过相应的交互接口提出在线调参优化请求,此时云端的控制器通过给智能优化系统发出在线调参请求,并根据用户真实负载对之前建立好的初步模型进行微调,然后将模型微调后推荐出的相应的参数配置在数据库中进行设置。反复执行上述过程,直到待调参的数据库性能满足用户或系统管理员的需求即停止调参。
CDBTune 系统交互图
在系统中采用强化学习,是因为强化学习可以边生成数据边训练模型,而且强化学习既可以在成功中学习,也可以在失败中学习,因此它对前期训练样本的质量要求不高,降低了学习建模的门槛。在 CDBTune 系统中,强化学习主要通过激励信号(数据库性能的变化)优化配置推荐网络,使得推荐出来的配置参数更为合理。
强化学习与数据库性能优化关系图
腾讯云数据库主要采用并发和延时两个指标来衡量数据库的性能。论文从整体性能比较(推荐时间、推荐结果),不同可调参数个数的影响比较,在弹性云环境下(用户内存和磁盘空间变化)CDBTune 的适应能力等三大方面对 CDBTune 进行考量。
为了了解不同步骤在训练和调优过程中所需要的耗时,团队记录了每个步骤的平均运行时间。每个步骤的运行时间为 5 分钟,主要又细分为 5 个部分(不包括重启 CDB 的 2 分钟),如下所示:
(1)压力测试时间(152.88 秒):工作负载的运行时间 用于收集数据库当前度量的工作负载生成器的运行时间。
(2)度量收集时间(0.86 ms):从内部度量获取状态向量并通过外部指标计算奖励的运行时间。
(3)模型更新时间(28.76 ms):在一次训练过程中神经网络前向计算和反向传播的运行时间。。
(4)推荐时间(2.16 ms):从输入数据库状态到输出推荐配置的运行时间。
(5)部署时间(16.68 秒):从输出推荐配置到根据 CDB 的 API 接口部署配置的运行时间。
对于离线训练,CDBTune 在 266 种推荐配置上训练完成需要大约 4.7 小时,在 65 种推荐配置上训练需要 2.3 小时。请注意,配置数会影响离线训练时间,但不会影响在线调优的时间。对于在线调优,每个调优请求分 5 步执行 CDBTune,总的耗时为 25 分钟。
另外,团队将 CDBTune 的在线调优效率与 OtterTune、BestConfig 和 DBA 进行对比,结果如下表所示。
其中,只有 CDBTune 需要离线训练,但它只需要进行一次训练就可以使用该模型进行在线调优,而 OtterTune 在每一次收到在线调优请求的时候都需要重新训练模型,BestConfig 则需要进行在线搜索。如下表所示,对于每个调优请求,OtterTune 需要 55 分钟,BestConfig 需要大约 250 分钟,DBA 需要 8.6 小时,而 CDBTune 只需要 25 分钟。在对比实验中,研发团队邀请了 3 位 DBA 来调整参数并选择其中的最佳结果。DBA 需要大约 2 个小时才能开始执行工作负载重放并找到影响数据库性能的因素(例如,分析源代码中最耗时的函数,然后定位原因,并找到相对应可以调整的配置),这个过程通常需要丰富的经验和大量的时间。
CDBTune 性能测试结果 1:性能比较
CDBTune 性能测试结果 2:内存 / 磁盘容量变化对模型的影响
CDBTune 不仅仅适用于云数据库,对于本地数据库同样也表现出了优异的性能,实验结果可以查阅论文的附录部分。
目前 CDBTune 在线推荐配置需要花大约 25 分钟左右的时间,腾讯将进一步压缩该时间,降低用户等待时长,从而提高用户体验。另外,目前团队正在进行 CDBTune 的产品化工作,相信过不了多久大家就可以在腾讯云上体验这项研究成果,研究团队也将继续寻求技术突破,以期在数据库调参领域取得更多成果。
下载论文原文,请关注“腾讯云数据库”公众号,回复“CDBTune”即可获取。
推荐阅读
▎支撑微信支付的数据库如何提供超300万TPCC事务处理能力?↓↓点击优惠购买腾讯云数据库